__author__ = 'zhiweifan'
# 定义变量不需要关键字
print("定义变量不需要关键字")
name1 = 2
print(name1)

# 变量名引用，可重新指向一个新的不同类型的变量，此语法合法！
print("变量名引用，可重新指向一个新的不同类型的变量，此语法合法！")
name1 = "abc"
print(name1)

# 变量不需要关键字，但没有任何声明或赋值，直接引用，会报错，如下会报错
# print(name2)

# 运算符 + ， - ， * 和 / 与其它语言一样 但/结果保留小数，//只保留整数部分结果
print("运算符 + ， - ， * 和 / 与其它语言一样 但/结果保留小数，//只保留整数部分结果")
print((50-5*6)/3) #6.666666666666667
print((50-5*6)//3) #6

# 需注意有负数时，结果与期望的不同，如下
print("需注意有负数时，结果与期望的不同，如下")
print(7//-3) #-3

# 等号（ '=' ）用于给变量赋值
print("等号（ '=' ）用于给变量赋值")
width = 20
height = 5*9
print(width * height)

# 一个值可以同时赋给几个变量
print("一个值可以同时赋给几个变量")
x = y = z = 10
print(y)

# 复数也得到支持；带有后缀 j 或 J 就被视为虚数。带有非零实部的复数写为 (real+imagj) ，或者可以用 complex(real, imag) 函数创建。
print("复数也得到支持；带有后缀 j 或 J 就被视为虚数。带有非零实部的复数写为 (real+imagj) ，或者可以用 complex(real, imag) 函数创建。")
a = 12 + 1j #此处等同于 complex(12, 1) ，j前必须有数字，1不能省略
print(a.real)
print(a.imag)

# 浮点数和整数之间的转换函数（ float() 和 int() 以及 long() ） 不能用于复数。没有什么正确方法可以把一个复数转成一个实数。函数 abs(z) 用于获取其模（浮点数）或 z.real 获取其实部
a = 3.0+4.0j
abs(a)  # sqrt(a.real**2 + a.imag**2)
# 以下会报错
# float(a)

# 交互模式中，最近一个表达式的值赋给变量 _ 。这样我们就可以把它当作一个桌面计算器，很方便的用于连续计算(只在交互模式有效)

# 有个方法可以从列表中按给定的索引而不是值来删除一个子项： del 语句。它不同于有返回值的 pop() 方法。语句 del 还可以从列表中删除切片或清空整个列表（我们以前介绍过一个方法是将空列表赋值给列表的切片）。例如:
#
# >>> a = [-1, 1, 66.25, 333, 333, 1234.5]
# >>> del a[0]
# >>> a
# [1, 66.25, 333, 333, 1234.5]
# >>> del a[2:4]
# >>> a
# [1, 66.25, 1234.5]
# >>> del a[:]
# >>> a
# []
# del 也可以删除整个变量:
#
# >>> del a